import Vue from 'vue'
import Vuex from 'vuex'
import { login } from '../api/user'
import user from './modules/user'
import { saveToken, getToken } from '../utils/storage'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // tokenInfo: {} // token信息
    // 优先级从localstorage取
    tokenInfo: getToken() || {} // token信息
  },
  mutations: {
    msetToken (state, newTokenInfo) {
      state.tokenInfo = newTokenInfo
      // 保存到本地localstorage
      saveToken(newTokenInfo)
    }
  },
  actions: {
    async userLogin (context, userInfo) {
      try {
        const res = await login(userInfo)
        // 拿到token
        console.log('登录成功，token信息', res.data.data)
        // 调用mutations
        context.commit('msetToken', res.data.data)
      } catch (err) {
        console.log('登录失败', err)
        // 加一个自定义错误，抛给父
        throw new Error(err)
      }
    }
  },
  modules: {
    user
  }
})
